# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

# todo 页面均使用js实现翻页，无法提取链接url，如何模拟js实现翻页
"""
crawlspider 经常应用于数据在同一个页面上进行采集的情况，如果数据在多个页面上采集，这个时候使用spider，初学者，建议少使用crawlspider;
数据在多个页面时，需要使用meta参数
"""
class TecentCrawlSpider(CrawlSpider):
    name = 'tecent_crawl'
    allowed_domains = ['tecent.com']
    start_urls = ['https://careers.tencent.com/search.html?&start=0#a']
    # 链接提取规则
    rules = (
        # 使用Rule类生成链接提取规则对象
        # LinkExtractor用于设置链接提取规则，一般使用allow参数，接收正则表达式
        # follow参数决定，是否在链接提取器提取的链接对应的响应中，继续应用链接提取器，提取链接
        Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
        # 设置详情页面链接提取规则
        Rule(LinkExtractor(allow=r''),callback='parse_item'),
        # 设置翻页链接提取规则
        Rule(LinkExtractor(allow=r''), callback = 'parse_item', follow = True),
    )

    # 在crawlspider中，不能重写parse方法
    def parse_item(self, response):
        item = {}
        #item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
        #item['name'] = response.xpath('//div[@id="name"]').get()
        #item['description'] = response.xpath('//div[@id="description"]').get()
        return item
